package api.waresHouse;

import com.github.pagehelper.PageInfo;
import dto.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

public interface StockApi {

    /**
     * 生成出/入库单
     * @param getStock
     * stock_order 单据对象
     * list 单据详情
     * 封装格式例如：{
     *                     stock_order:{
     *                         type:10,//单据类型
     *                         relCode:'CG-16512316'//关联单号
     *                         status:1,//需设定的单据状态
     *                         houseId:1, //出入库仓库
     *                         single:'',
     *                         subDate:'', (提交时间)
     *                         verifier:'',
     *                         verifyDate:'',
     *                         preDate:'', //预计时间
     *                         remark:''
     *                     },
     *                     list:[{
     *                         waresId:652458, 商品id
     *                         quantity:1, 数量
     *                         unit:'',  商品单位
     *                         remark:'',  备注
     *                     },.....]
     *                 }
     * @return
     */
    @RequestMapping("addStock_order")
    Dto<Integer> addStock_order(@RequestBody GetStock getStock);

    /**
     * @param getStock
     * @return
     */
    @RequestMapping("upStock_order")
    Dto<Integer> upStock_order(@RequestBody GetStock getStock);

    /**
     * 改变出库单状态
     * @param map
     * bStatus 当前状态id
     * status 需改变的状态id
     * code 单据编号
     * type 单据类型id
     * single 制单人
     * subDate 提交时间
     * verifier 审核人
     * verifyDate 审核时间
     * @return
     */
    @RequestMapping("nextStock_order")
    Dto<Integer> nextStock_order(@RequestBody Map map);

    /**
     * @param map 查询出入库单
     * code 出入库单号 模糊查询
     * relCode 关联单号
     * houseId 仓库id
     * status 状态id
     * type 类型id
     * typeof 类型所属id （仅为分辨出入库类型）
     *            code, relCode, type, typeId, status, statusId, warehouse, single, subDate, verifier, verifyDate, preDate, remark
     * @return 单据号，关联单号，单据类型名称，单据类型id，状态名称，状态id，仓库名称，提交人，提交时间，审核人，审核时间，预计完成时间，备注
     */
    @RequestMapping("getStock_order")
    Dto<PageInfo<ShowStock>> getStock_order(@RequestBody Map map);

    /**
     * @param map
     * @return
     */
    @RequestMapping("getStock_list")
    Dto<List<ShowStock_list>> getStock_list(@RequestBody Map map);
    /**
     * @param code
     * @return
     */
    @RequestMapping("delStock_order")
    Dto<Integer> delStock_order(@RequestParam("code") String code);

    /**
     * @param map
     * @return
     */
    @RequestMapping("getDb_order")
    Dto<PageInfo<ShowDb_order>> getDb_order(@RequestBody Map map);

    /**
     * @param getStock
     * @return
     */
    @RequestMapping("addDb_order")
    Dto<Integer> addDb_order(@RequestBody GetStock getStock);

    /**
     * 改变出库单状态
     * @param map
     * bStatus 之前的状态
     * status 需改变的状态id
     * code 单据编号
     * rDate 入库时间
     * cDate 出库时间
     * @return
     */
    @RequestMapping("nextDb_order")
    Dto<Integer> nextDb_order(@RequestBody Map map);

    /**
     * @return
     */
    @RequestMapping("getMingXi")
    Dto<PageInfo<ShowStock_list>> getMingXi(@RequestBody Map map);
}
